﻿/**
 * Copyright 2005 by LongTop Corporation.
 * Softpack ChuangXin Building 15F, XiaMen, FuJian, PRC 361005
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * LongTop Corporation ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with LongTop.
 *
 */

/**
 * @fileoverview  客户端产品级配置文件，用于配置客户端属性，提供客户端引擎文件调用。<br>
 * 与服务端配置文件src/intelliweb.properties作用类似。<br><br>
 *
 * 二次开发人员可修改配置值,但不要修改或删除配置名。<br><br>
 *
 * 配置名(key)的命名规则如下：<br>
 *
 * 1）全部为小写英文单词；<br>
 * 2）固定以"config."开头，后跟多个英文单词，单词与单词之间用下划线分隔。<br>
 *
 * @author {@link http://www.longtop.com 东南融通}
 * @version 2.0
 */


/**
 * 配置管理类构造函数。
 *
 * @class 配置管理类。
 * @constructor
 */
var config = {};

/**
 * 是否禁用浏览器右键（true:禁用;false:启用,默认）
 * @type Boolean
 * @member config
 */
config.disable_browser_context_menu = false;

/**
 * 是否转换回车键为TAB键（即按回车键时，自动定位到下一个元素,true:是;false:否,默认）
 * @type Boolean
 */
config.enter_to_tab = false;

/**
 * 是否显示客户端脚本出错时用户自定义的友好信息（true:显示;false:默认，不显示）。<br>
 * 二次开发人员在开发项目时，可开启此开关(true)，用于显示客户端脚本出错信息，发布后，可禁用此项(false)。<br>
 *
 * 示例：二次开发人员在自己的客户端脚本中这样使用：<br>
 * <b>function</b> beforeSave() {<br>
 *  try {<br>
 *         throw "信息填写不完整"; //显示抛出的出错信息，在catch中会捕捉到<br>
 *         your client script...<br>
 *   } catch(e) {<br>
 *         errinfo = "出错方法beforeSave()\n出错原因：这里写友好出错信息";<br>
 *         showExceptionInfo(e,errinfo); //showExceptionInfo方法是由用户提供<br>
 *      }<br>
 * }<br>
 * 上面脚本中，如果脚本出错，且config.show_custom_exception_info=true，则除会弹出系统出错信息外(在e对象里)，<br>
 * 还会弹出用户自定义的友好出错信息(errinfo)，开发人员可用于跟踪出错方法等。否则，只会弹出系统出错信息。<br>
 *
 * @type Boolean
 */
config.show_custom_exception_info = true;

/**
 * 是否屏蔽客户端错误信息（不会屏蔽显示调用throw抛出的信息）。（建议开发阶段不要屏蔽，设为false，部署阶段屏蔽，设为true）<br>
 * 在部署阶段屏蔽错误信息的目的是让那些无法预知的错误或不影响功能使用的错误不要影响用户的操作。
 *
 * @type Boolean
 */
config.close_error_info = false;

/**
 * 鼠标离开菜单时，是否自动隐藏菜单<br>
 * true:是，常用于菜单文件中包括iframe的情况。在iframe里单击，不会自动隐藏菜单，需要在离开菜单项时自动隐藏菜单<br>
 * false:否，默认，鼠标离开菜单时，需要在菜单区域外单击才会隐藏菜单
 *
 * @type Boolean
 */
config.mouseout_hide_menu = false;

/**
 * 默认窗口装载的框架名，有_blank（新窗口）,_self(当前窗口),_parent(父类窗口),_top(顶级窗口) 及自定义框架名
 *
 * @type String
 */
config.default_frame_name = "_blank";

/**
 * 默认整数型（short,integer,long）数字显示格式,若不要格式，可设置为plain
 *
 * @type String
 */
config.default_integer_format = "#,###";

/**
 * 默认浮点型（double,float,bigdecimal）数字显示格式,若不要格式，可设置为plain。<br>
 * 小数点后的一个#代表显示一位小数，前面可加货币单位，如$#,###.##。
 *
 * @type String
 */
config.default_float_format = "#,###.##";

/**
 * 默认日期型（date）显示格式,日期模型有"yyyy","MM","dd",分别代表四位年份、月份及日期,顺序可随意；<br>
 * 日期模型分隔符可为"-",".","/","年月日"等等。<br>
 * 可设置其它如：yyyy年MM月dd日、yyyy-MM-dd,yyyy/MM/dd,yyyy.MM.dd,MM/yyyy/dd等<br>
 *
 * @type String
 */
config.default_date_format = "yyyy-MM-dd";

/**
 * 默认日期时间型（timestamp）显示格式,日期模型有"yyyy","MM","dd",分别代表四位年份、月份及日期，顺序可随意；<br>
 * 时间模型有"HH"（24小时制,hh:12小时制）,"mm","ss"等,日期模型分隔符可为"-",".","/","年月日",空等等,时间模型分隔符为冒号、时分秒等。<br>
 * 可设置其它如：yyyy年MM月dd日 hh时mm分ss秒等<br>
 *
 * @type String
 */
config.default_datetime_format = "yyyy-MM-dd HH:mm:ss";

/**
 * 字段类型为字符型（string）且为空值(null)时的默认值
 *
 * @type String
 */
config.default_string_value = "";

/**
 * 字段类型为整数型（short,integer,long）且为空值(null)时的默认值，可以为空对象null(界面显示空白)
 *
 * @type Object
 */
config.default_integer_value = 0;

/**
 * 字段类型为浮点型（double,float,bigdecimal）且为空值(null)时的默认值，可以为空对象null(界面显示空白)
 *
 * @type Object
 */
config.default_float_value = 0.0;

/**
 * 字段类型为日期型（date）且为空值(null)时的默认值，为空对象null(界面显示空白)，为0时，界面显示1970-1-1
 *
 * @type Object
 */
config.default_date_value = null;

/**
 * 字段类型为布尔型（boolean）且为空值(null)时的默认值，为空对象null(界面显示空白)
 *
 * @type Object
 */
config.default_boolean_value = false;

/**
 * checkbox控件关联字段类型为boolean时，默认选中时的值
 *
 * @type Boolean
 */
config.checkbox_boolean_selected = true;

/**
 * checkbox控件关联字段类型为boolean时，默认非选中时的值
 *
 * @type Boolean
 */
config.checkbox_boolean_unselected = false;

/**
 * checkbox控件关联字段类型为数字型（short,integer,long,double,float,bigdecimal）时，默认选中时的值
 *
 * @type Number
 */
config.checkbox_integer_selected = 1;

/**
 * checkbox控件关联字段类型为数字型（short,integer,long,double,float,bigdecimal）时，默认非选中时的值
 *
 * @type Number
 */
config.checkbox_integer_unselected = 0;

/**
 * checkbox控件关联字段类型为字符时，默认选中时的值
 *
 * @type String
 */
config.checkbox_string_selected = "1";

/**
 * checkbox控件关联字段类型为字符时，默认非选中时的值
 *
 * @type String
 */
config.checkbox_string_unselected = "0";

/**
 * 必输字段提示符(样式在skin.css里required_field_symbol)
 *
 * @type String
 */
config.required_field_symbol = "*";

/**
 * Field必输(required=true)时的样式。
 * @detail
 * 有以下两种方式：
 * symbol：默认值，设置必输时Text控件后面显示一个符号，如必输时的Text后面显示星号。
 * 符号在config.required_field_symbol变量中设置，符号的样式在当前皮肤skin.css中的required_field_symbol设置。
 * style：设置必输时Text背景样式，如设置必输时的Text背景色为谈黄色。
 * 背景样式在当前皮肤skin.css中的editor_required，editor_active_required设置。
 *
 * @type String
 *
 */
config.required_field_type = "symbol";

/**
 * 客户端cookie默认保存期(单位：小时)。
 *
 * @type Number
 */
config.cookie_default_expire = 30 * 24;
//默认30天

/**
 * 通过xmlhttp协议提交到服务端默认的servlet。
 *
 * @type String
 */
config.default_servlet = "/servlet/dataengine";

/**
 * 发送指定级别的客户端日志信息到服务端指定的文件中，实现在服务端收集客户端日志信息的功能。<br>
 * 客户端日志级别严重程度顺序为：error>warn>debug>info，对应客户端方法为：Log.writeError,Log.writeWarn,Log.writeDebug,Log.writeInfo。<br>
 * 设置某级别的日志允许发送到服务端时，其高级别的日志也允许发送到服务端。如配置了日志信息发送到服务端的级别为warn，<br>
 * 则使用logError，logWarn方法记录的信息均会发送到服务端日志文件中，反之，则不可以。<br>
 *
 * 可以设置的值及含义为(数字类型)：
 * 0--info(信息级别)
 * 1--debug(调试级别)
 * 2--warn(警告级别)
 * 3--error(错误级别) -- 默认
 * 3以上--不发送信息到服务端
 *
 * @type Number
 */
config.send_to_server_log_level = 3;

/**
 * 日志级别名称列表。在客户端信息发送到服务端日志文件中时显示的日志级别名称，<br>
 * 格式为：datetime [日志名称] 日志信息，如：<br>
 * 2008-10-15 09:41:18 [ERROR] 对象不存在
 *
 * @type Array
 */
config.log_level_name_list = ["INFO","DEBUG","WARN","ERROR"];

/**
 * 发送客户端日志到服务端的Servlet
 * @type String
 * @see config.send_to_server_log_level
 */
config.send_to_server_log_servlet = "servlet/clientLogServlet";

/**
 * 在文本框控件双击时，是否自动填入当前日期或时间，默认true。
 * @detail
 * 该属性必须同时符合以下三个条件时，双击才有效：
 * 1）文本框原先没有值
 * 2）文本框没有定义双击事件
 * 3）文本框的dataType(或关联的field的dataType)为date或timestamp或有下拉DatePicker控件时有效。
 * @type Boolean
 */
config.auto_fill_date_ondblclick = true;

/**
 * 是否显示默认系统默认对话框。则显示系统消息弹出框。即：showInfoMsg,showWarnMsg,showErrorMsg,showCustomizeMsg等同于window.alert()方法，
 * showConfirmMsg等同于window.confirm()方法
 * @type Boolean
 */
config.show_system_msgbox = false;

/**
 * 消息对话框默认大小([宽度,高度])
 * @type Array
 */
config.messagebox_size = [350,130];

/**
 * 编辑表格(Grid)内多行文本编辑器弹出窗口大小([宽度,高度])
 * @type Array
 */
config.textarea_window_size = [400,300];

/**
 * 页面在加载时是否显示进度条
 * @type Boolean
 */
config.show_page_progressbar = true;

config.disable_bgcolor = '#D4D0C8';

config.enable_bgcolor = '#ffff';

/**
 *是否去掉字符串右边的空格。对于数据库字段类型为char时，在界面显示时不想显示右边的空格,需要设置该属性为true。
 *@detail
 *
 *如果想让所有数据库字段类型为char时不想在界面显示右边的空格，可从两个地方进行全局设置：
 *1）服务端配置文件：intelliweb.properties 设置intelliweb.trimright = true;//默认false
 *2）客户端配置文件：intelliweb-config.js 设置 config.trimright = true;//默认false
 *
 *说明如下：
 *1）必须确保Field的trimRight没有设置（或为空值）全局设置才生效，如果Field的trimRight有设置true或false，则取Field的trimRight为准；
 *2）如果设置intelliweb.properties中的intelliweb.trimright为true，则在服务端就把空格给去掉，不会把空格传到客户端，也不会显示在前端页面；
 *3）如果设置intelliweb-config.js中的config.trimright = true，则在客户端把带有空格的字符给去掉，不会显示在前端页面。
 * @type Boolean
 */
config.trimright = false;

/**
 * 必输项获得焦点时，如果没有输入是否不允许离开。
 * true:在离开时，默认值，会有必输信息提示并自动使该控件获得焦点。(如果config.show_required_info_onblur为true，则该属性无效)
 * false:在离开时，会有必输信息提示，同时，下一个控件获得焦点。
 * @type Boolean
 */
config.always_required_focus = true;

/**
 * 是否在Grid中总是显示过滤行。(Grid的showFilterRow优先级大于该属性设置)
 * true:默认，当Grid的showIndicator设置为true时，显示过滤行
 * false:不显示过滤行，即使showIndicator设置为true
 * @type Boolean
 */
config.always_show_filter_row = true;

/**
 * 是在光标离开Text控件时检查（检查项包括：输入框对象或关联字段的是否必输、是否超出最大长度，关联校验器是否验证通过）并提示信息还是
 * 让光标离开Text控件时不检查, 而是在Command提交时统一检查。
 * true:默认，在光标离开Text控件时检查并提示信息
 * false:光标离开Text控件时不检查, 而是在Command提交时统一检查（需要配置Command的validateRequired为true）
 * @type Boolean
 */
config.show_required_info_onblur = false;

/**
 * 在树结点文本上双击展开/收回结点，还是单击展开/收回结点。
 * true:默认，双击展开/收回结点
 * false:单击展开/收回结点
 * @type Boolean
 */
config.tree_ondblclick_expandorcollapse = true;
/**
 * Command的validateRequired默认值，如果Command没有设置validateRequired，则取该默认值(默认true)。
 * 详细请看Command的validateRequired的属性说明。
 * @type Boolean
 */
config.command_default_validate_requried = true;

/**
 * 用户自定义的客户端编码方法名，不带参数。对应的方法实现体需要在用户的自定义js文件中实现。如果为空，则使用产品默认提供的编码方法
 * @detail 在客户端与服务端数据同步时，会自动调用产品默认提供的算法一致的客户端与服务端的编码解码方法，如果用户想使用自定义的编码解码方法
 * 必须在此配置编码解码方法名，且必须在服务端src/intelliweb.properties中intelliweb.encode.method,intelliweb.decode.method配置
 * 与客户端算法相同的编码解码方法，且对应的方法默认固定带一个要编码或解码的字符串参数。
 * @type String
 */
config.custom_encode_method = "";
/**
 * 用户自定义的客户端解码方法名,不带参数。对应的方法实现体需要在用户的自定义js文件中实现。如果为空，则使用产品默认提供的解码方法
 * @type String
 * @see config.custom_encode_method
 */
config.custom_decode_method = "";

/**
 * 进度条出现时是否禁止屏幕操作(true:是(默认) false:否）
 * @type Boolean
 */
config.disabled_screen_progressbar_show = true;

/**
 * 设置Dataset是否统计查询总页数的默认值，如果Dataset的calculateTotalSize属性没有设置，则取该默认值。<br>
 * 该属性仅用来控制关联可视控件PageNavigator的显示形式，不控制后台是否查询数据库（需要开发人员自己控制）
 * 如果为true，则关联的PageNavigator的最后一页按钮禁止操作及定位于某一页，以及不显示总页数，总记录数信息。
 * @type Boolean
 */
config.default_vaue_of_calculate_totalsize = true;

/**
 * 设置命令控件（封装Ajax）执行时是client与server采用交互机制的默认值。true:异步交互，false:同步交互。<br>
 * 如果Command的async没有设置，则默认值取自于该选项。
 * @type Boolean
 */
config.default_command_execute_async = false;

/**
 * 数字类型(short,integer,long,float,double,bigdecimal)在文本框中默认对齐方式，
 * 如果没有特别设置单个文本框的对齐方式及没有设置该默认值，则固定局右。
 * 有两种值：right--向右对齐(默认),left--向左对齐
 * @type String
 */
config.default_numberic_text_align = "right";

/**
 * 表格(Grid，StaticGrid)列默认是否允许排序。true:默认值，允许排序，false:不允许排序
 * @type Boolean
 */
config.default_column_allow_sort = true;

/**
 * 配置Grid的allowResizeColumn的默认值，true:允许改变列宽，false:不允许改变列宽
 * @type Boolean
 */
config.default_column_allow_resize = true;
/**
 * 配置Grid的allowDragColumn的默认值，true:允许改变列位置，false:不允许改变列位置
 * @type Boolean
 */
config.default_column_allow_drag = true;

/**
 * 配置DropDown(包括ListDropDown,DataDropDown,DatePicker)的autoDropDown的默认值。
 * true:文本框获得焦点时自动弹出下拉窗口，false:单击下拉按钮时弹出下拉窗口(默认值)
 * @type Boolean
 */
config.default_dropdown_autodropdown = false;

/**
 * 配置DropDown(包括ListDropDown,DataDropDown,DatePicker)的fixed的默认值。
 * true:只能选择，不能输入,false:既可选择，又能输入(默认值)
 * @type Boolean
 */
config.default_dropdown_fixed = false;
/**
 * 配置DropDown(包括ListDropDown,DataDropDown,DatePicker)的autoShowDropDownButton的默认值。
 * true:自动在文本框右边显示DropDownButton,false：文本框获得焦点时，在右边显示DropDownButton
 * @type Boolean
 */
config.default_dropdown_autoshowdropdownbutton = true;

/**
 * 是否开启代码执行耗时跟踪（设置为true时，会影响代码执行效率，建议仅在开发阶段使用）,true:开启，false:默认值，关闭
 * 在代码执行耗时跟踪开启状态，按CTRL+ALT+F8会调出代码执行耗时窗口
 * @type Boolean
 */
config.enable_code_elapse_track = true;
/**
 * 代码执行耗时窗口最多显示行数,默认100，该参数在config.enable_code_elapse_track=true时有效
 * @type int
 */
config.code_elapse_window_max_lines = 100;
/**
 * 记录发生变化时（如新增一条记录，必输项没有输入时，再次新增一条记录），是否对变化前的记录进行校验并提示(如必输项验证)。<br>
 * true:默认值，记录发生变化时，对变化前的记录校验并提示<br>
 * false:记录发生变化时，不验证，只在Command统一提交时验证(Command的validateRequired设置为true)
 * @type Boolean
 */
config.validate_record_changed = true;
/**
 * 是否把空格当作空对待（Text要求必输时，即输入的全部是空格时，当作没有输入，校验不通过）。<br>
 * true:是，空格当空对待；false：默认值，空格作为有效字符
 * @type Boolean
 */
config.blank_to_empty = false;

/**
 * 在Text中输入的字符是按照什么规则来匹配关联ListDropDown或DataDropDown列表中的信息。
 *
 * 有以下三种匹配情况：
 * "1",代码值匹配
 * "2",文本值匹配
 * "3",代码值或文本值匹配
 *
 * 说明：
 *  1）以上默认值为"3"，可以在intelliweb-config.js中dropdown_matchrule_defaultvalue修改默认值
 *  2）代码值：对应ListDropDown中列表项的value值或DataDropDown中codeField值；
 *     文本值：对应ListDropDown中列表项的label值或DataDropDown中textField值。
 *  3）采用包含(类似"%xx%"),逐项匹配且字母不区分大小写。
 * @type string
 */
config.dropdown_matchrule_defaultvalue = "3";

/**
 * 全局设置PageNavigator是否页大小的默认值。该属性值说明如下：
 * 1）true:允许最终用户在界面上改变每页显示大小，该值会通过关联的Dataset的pageSize传到后台Action类中，后台Action类可根据该值进行数据查询分页。
 * 初次值来自src/intelliweb.properties中intelliweb.default.pagesize默认值，其后把每次改变的值存入Cookie中。
 * 2）false:每页大小固定值为src/intelliweb.properties中intelliweb.default.pagesize默认值
 * <p/>
 * 该属性的默认值在 intelliweb-config.js的config.pagenavigator_showpagesize中配置
 *
 * @type boolean
 */
config.pagenavigator_showpagesize = true;
/**
 * 在删除当前页最后一条记录时是往下移（跳到下一页的第一条)还是向上移（当前页的上一条）
 * "down"：向下移，跳到下一页的第一条,若下一页不存在，则移到当前页的上一条。
 * "up":向上移，移到当前页的上一条，若上一条不存在，则向下移
 * @type string
 */
config.move_record_direction = "down";

/**
 * 配置页面初始化完毕后自动执行的函数名，需要页面上提供该函数的实现。该入口点提供用户自定义代码的后续自动执行。
 *
 * 该函数在页面的onAfterInitElement,onAfterLoadPage事件执行完毕后再执行,不带参数。在函数体内可以直接获取页面上所有控件及DOM对象。
 * 对于一个页面初始化自动执行事件点的先后顺序是：onBeforeLoadPage,onAfterInitElement,onAfterLoadPage,onAfterInitPage(名字可配置)
 * @type string
 */
config.eventname_onafterinitpage = "onAfterInitPage";

/**
 * 设置Field的dataType为bigdecimal时的小数点后面默认位数，若为-1，则保留原样的小数位数
 * @type int
 */
config.default_number_scale = -1;

/**
 * 是否允许日期当作日期时间处理。（在Field或Text关联的DatePicker的showType为timestamp时，是否允许输入了日期也允许验证通过）
 * true:允许日期当作日期时间处理；false:默认，不允许日期当作日期时间处理
 * @type Boolean
 */
config.date_to_timestamp = false;

/**
 * 是否允许自适应行高的配置项，值说明如下：
 * true：自动根据行内容调整行高到能看到全部内容（在行里的单元格编辑时，当内容发生变化，离开焦点也会自动调整行高），
 *       该属性对列或关联的Field的editorType为textarea有效。回车符(\n)作为单元格里的内容的行分割符，也是行高的倍数。
 * false：默认单元格只显示第一行。同时在第一行后加"…"以示有多行提示，鼠标移上时会显示全部内容。
 *
 * 若没有设置，则默认为false。
 * @type Boolean
 */
config.auto_fit_rowheight = false;

/**
 * 向下光标键移动到可编辑表格末尾时，是否自动增加新行。true:自动增加新行，false:不增加
 *
 * 若没有设置，则默认为false。
 * @type Boolean
 */
config.grid_auto_append_row = false;

/**
 * 置在Grid的单元格获得焦点（Column或关联Field的editorType为textarea）时，是否自动弹出编辑窗口
 * true:单元格获得焦点时立即弹出编辑窗口
 * false:必须单击右边按钮才能弹出编辑窗口
 *
 * 若没有设置，则默认为false。
 * @type Boolean
 */
config.gridcell_focus_popwin = false;
/**
 * 设置是否缓存下载到客户端的数据页到客户端数据集中的默认值。如果dataset的cacheLoadedPage属性没有设置，则取该值。
 *
 * 若没有设置，则默认为true。
 * @type Boolean
 */
config.dataset_cacheloadedpage_defaultvalue = true;

/**
 * 把值粘贴到Text控件时，是否自动过滤无效字符（若只允许输入数字时，就不会把非数字paste进来；
 * 对于指定小数位时（bigdeimal(p,s))，会自动截取符合位数过来）。
 * 若启用该功能，对于IE7,IE8默认会弹出“粘贴”确认框。解决办法是：打开“工具-Internet选项-安全-Internet再选择“自定义级别”，
 * 在下拉列表中找到“允许对剪贴板进程编程访问”，在属性栏里选中“启用”，再按确定既可，这样下次开启IE7/8的时候就不会再出现这个提示。
 *
 * 若没有设置，则默认为false。
 * @type Boolean
 */
config.enable_filter_before_paste = false;

/**
 * 在LookupDropDown关联的Text按回车键，是否自动跳到下一个控件，该配置需要设置config.enter_to_tab=true才有效。
 *
 * 若没有设置，则默认为true
 * @type Boolean
 */
config.lookupdropdown_enter_next_element = true;
/**
 * 在切换Tab页时，是否需要遍历显示或隐藏tab页内所有子元素
 *
 * 若没有设置，则默认为false
 * @type Boolean
 */
config.display_tab_child_elements = false;

/**
 * 设置所有PageNavigator控件允许用户动态改变的每页最大记录数（全局设置）。 单个PageNavigator控件每页最大记录数可以
 * 在page的onAfterLoadPage事件里使用$J("pageNavigator1").maxPageSize = n 进行设置（局部设置）。
 *
 * 该数值最大不能超过当前查询结果总数，-1表示不限制每页最大记录数，但也不允许超过当前查询结果总数。
 *
 * 作用顺序：若设置了局部，则以局部为准；否则，启用全局设置。
 *
 * 不管是局部还是全局，必须config.pagenavigator_showpagesize = true才有效。
 *
 * 默认值：-1
 * @type int
 */
config.pagenavigator_maxpagesize = -1;